import { ref } from 'vue'
import * as echarts from 'echarts'

export function usePartyProductionChart() {
  const partyProductionChart = ref(null)

  // 初始化图表的通用函数
  const initChart = (chartRef, option) => {
    if (!chartRef.value) return
    const chart = echarts.init(chartRef.value)
    chart.setOption(option)

    // 添加响应式调整
    window.addEventListener('resize', () => {
      chart.resize()
    })

    return chart
  }

  // 图表5：党建与生产关联分析 - 热力图
  const initPartyProductionChart = async (data) => {
    // 使用API返回的数据，格式为 { links: [...] }
    const { links } = data || {};
    // 定义指标列表
    const metricsList = ['生产影响度', '质量提升率', '创新贡献', '成本节约'];
    // 从links中提取组织名称列表（去重）
    const uniqueOrgNames = [...new Set(links?.map(link => link.organizationName) || [])];
    // 如果没有数据，使用默认组织名称
    const orgNameList = uniqueOrgNames.length > 0 ? uniqueOrgNames : ['机械一分厂', '电子二分厂', '汽车三分厂', '质量部', '技术部'];

    let heatmapData = [];
    let allValues = [];

    // 转换API返回的links数据为热力图所需的格式 [列索引, 行索引, 值]
    links.forEach((link, orgIndex) => {
      // 确保组织索引在有效范围内
      const safeOrgIndex = Math.min(orgIndex, orgNameList.length - 1);

      // 添加生产影响度数据（API已返回百分比格式）
      const productionImpactValue = Math.round(link.productionImpact * 10) / 10;
      heatmapData.push([safeOrgIndex, 0, productionImpactValue]);
      allValues.push(productionImpactValue);

      // 添加质量提升率数据（API已返回百分比格式）
      const qualityImprovementValue = Math.round(link.qualityImprovement * 10) / 10;
      heatmapData.push([safeOrgIndex, 1, qualityImprovementValue]);
      allValues.push(qualityImprovementValue);

      // 添加创新贡献值数据
      heatmapData.push([safeOrgIndex, 2, link.innovationContribution]);
      allValues.push(link.innovationContribution);

      // 添加成本节约数据
      heatmapData.push([safeOrgIndex, 3, link.costSaving]);
      allValues.push(link.costSaving);
    });


    // 确保allValues数组不为空，否则Math.min和Math.max会返回NaN
    if (allValues.length === 0) {
      allValues = [0, 100]; // 设置默认的颜色范围值
    }

    const option = {
      tooltip: {
        position: 'top',
        backgroundColor: 'rgba(0, 0, 0, 0.7)',
        borderColor: '#1890ff',
        textStyle: { color: '#fff' },
        formatter: function (params) {
          const orgIndex = params.value[0];
          const metricIndex = params.value[1];
          const value = params.value[2];
          const organization = orgNameList[orgIndex] || '未知组织';
          const metric = metricsList[metricIndex] || '未知指标';

          // 根据指标类型返回不同格式的提示信息
          if (metricIndex === 0) {
            return `${organization}<br/>生产影响度: ${value}%`;
          } else if (metricIndex === 1) {
            return `${organization}<br/>质量提升率: ${value}%`;
          } else if (metricIndex === 2) {
            return `${organization}<br/>创新贡献值: ${value}`;
          } else if (metricIndex === 3) {
            return `${organization}<br/>成本节约: ${value}万元`;
          }
          return `${organization}<br/>${metric}: ${value}`;
        }
      },
      grid: {
        height: '60%',
        top: '15%',
        left: '10%',
        right: '10%'
      },
      xAxis: {
        type: 'category',
        data: orgNameList,
        splitArea: {
          show: true
        },
        axisLabel: {
          color: '#fff',
          fontSize: 11,
          rotate: 30
        },
        axisLine: {
          lineStyle: {
            color: 'rgba(64, 158, 255, 0.3)'
          }
        }
      },
      yAxis: {
        type: 'category',
        data: metricsList,
        splitArea: {
          show: true
        },
        axisLabel: {
          color: '#fff',
          fontSize: 11
        },
        axisLine: {
          lineStyle: {
            color: 'rgba(64, 158, 255, 0.3)'
          }
        }
      },
      visualMap: {
        min: Math.min(...allValues),
        max: Math.max(...allValues),
        calculable: true,
        orient: 'horizontal',
        left: 'center',
        bottom: '5%',
        textStyle: {
          color: '#fff'
        },
        inRange: {
          color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
        }
      },
      series: [{
        name: '党建与生产关联',
        type: 'heatmap',
        data: heatmapData,
        label: {
          show: true,
          fontSize: 10,
          formatter: function (params) {
            return params.value[2];
          }
        },
        emphasis: {
          itemStyle: {
            shadowBlur: 10,
            shadowColor: 'rgba(0, 0, 0, 0.5)'
          }
        }
      }]
    };

    initChart(partyProductionChart, option);
  };

  return {
    partyProductionChart,
    initPartyProductionChart
  }
}
